<?php
/**
 * Created by PhpStorm.
 * User: wumengmeng <wu_mengmeng@foxmail.com>
 * Date: 2019/4/26 0026
 * Time: 14:35
 */

namespace HiCommon\Service;


use HiCommon\Repository\AdminsRepository;
use HiCommon\Repository\EntrustRoleUserRepository;
use Illuminate\Support\Facades\Hash;

class AdminUserService extends BaseService
{

    /**
     * 根据条件查询用户信息
     *
     * @param array $arr_where
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_get_admin_user_info_by_where($arr_where = []){
        $arr_option['field'] = ['id','type','username','realname','nickname','phone','balance'];
        $arr_option['with'] = ['shop'];
        $res = AdminsRepository::base_get_one($arr_where,$arr_option);
        if(is_null($res)){
            $data = [];
        }
        else{
            $data = $res->toarray();
        }

        return  hello_success('成功',$data);
    }

    /*获取用户信息 + 店铺信息*/
    public function api_admin_user_info($n_uid = 0){
        $n_uid = intval($n_uid);
        if($n_uid <= 0){
            return hello_error('用户id不能为空');
        }
        $res = AdminsRepository::user_shop_info($n_uid)->toArray();
        return  hello_success('成功',$res);
    }

    /**
     * 根据搜索条件获取后台用户分页数据
     *
     * @param array $arr_search
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_search_list(array $arr_search)
    {
        $data = AdminsRepository::get_search_list($arr_search);
        $data->appends($arr_search);//添加链接参数
        $data = list_page_data($data,$arr_search);
        $data['admin_id'] = (int)admin_user_id();
        return  hello_success('成功',$data);
    }

    /**
     * 添加一条管理后台用户数据
     *
     * @param $arr_input
     *
     * @return array|\Illuminate\Http\RedirectResponse
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_add_one($arr_input)
    {
        filter_input_data($arr_input);
        $n_role_id = (int)$arr_input['role_id'];
        array_pull($arr_input,'role_id');
        $arr_input['password'] = Hash::make($arr_input['pass']);
        if($n_role_id <= 0) {
            return hello_error('请选择用户角色');
        }

        //添加后台用户信息
        $res = AdminsRepository::base_add_one($arr_input)->toarray();
        $n_admin_id = $res['id'];
        if(empty($res)){
            return hello_error('添加失败');
        }

        //添加用户角色信息
        $arr_data = ['user_id'=>$n_admin_id,'role_id'=>$n_role_id];
        $res = EntrustRoleUserRepository::add_one_admin_role_user($arr_data)->toarray();
        if(empty($res)){
            return hello_error('添加失败2');
        }

        return  hello_success('成功',$res);
    }

    /**
     * 查询一条管理后台用户数据
     *
     * @param int $n_id
     *
     * @return mixed
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_get_one(int $n_id)
    {
        $n_id = intval($n_id);
        if($n_id <= 0) {
            hello_error('数据ID不能为空');
        }

        //查询
        $arr_option['with'] = ['admin_role_user'];
        $res = AdminsRepository::base_find_one($n_id,$arr_option)->toarray();

        if(empty($res)){
            return hello_error('查询失败');
        }
        return  hello_success('查询成功',$res);
    }

    /**
     * 修改管理后台用户
     *
     * @param array $arr_input
     *
     * @return array|\Illuminate\Http\RedirectResponse
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_edit_one(array $arr_input)
    {
        filter_input_data($arr_input);
        $arr_input['id'] = intval($arr_input['id']);
        $n_role_id = intval($arr_input['role_id']);
        array_pull($arr_input,'role_id');
        if ($arr_input['id'] <= 0) {
            return hello_error('数据id不能为空');
        }

        $arr_input['password'] = Hash::make($arr_input['pass']);
        if($n_role_id <= 0) {
            return hello_error('请选择用户角色');
        }

        //修改后台用户信息
        $res = AdminsRepository::base_edit_one($arr_input);
        if ($res === false) {
            return hello_error('修改失败1');
        }

        //修改用户角色信息
        $arr_where = ['user_id'=>$arr_input['id'],'model'=>'admin'];
        $arr_data = ['role_id'=>$n_role_id];
        $res = EntrustRoleUserRepository::edit_or_create($arr_where,$arr_data);
        if($res === false){
            return hello_error('修改失败2');
        }
        return hello_success('修改成功');
    }


    /**
     * 修改管理后台用户单个字段
     *
     * @param $arr_input
     *
     * @return array
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_change_one_state($arr_input){
        $arr_input['id'] = (int)$arr_input['id'];
        if ($arr_input['id'] <= 0) {
            return hello_error('数据id不能为空');
        }

        $res = AdminsRepository::base_edit_one($arr_input);
        if ($res === false) {
            return hello_error('操作失败');
        }
        return hello_success('成功');
    }

    /**
     * 删除一个管理后台用户
     *
     * @param int $n_id
     *
     * @return array|\Illuminate\Http\RedirectResponse
     * @author wumengmeng <wu_mengmeng@foxmail.com>
     */
    public function api_delete_one($n_id)
    {
        if ($n_id <= 0) {
            return hello_error('数据id不能为空');
        }
        $res = AdminsRepository::base_delete_one($n_id);
        if($res === false){
            return hello_error('操作失败');
        }
        return  hello_success('成功');
    }
}